local actionSlot = 1  -- 第1个格子，对应 ActionButton1
local doit = true
-- local LSF = SpellFlashCore

-- 进入绑定模式
function configs()
	local isAccountBindings = true -- true 表示修改账号绑定，false 表示修改角色绑定
	LoadBindings(isAccountBindings and 1 or 2)
	SetBinding("SHIFT-B") -- 开关背包
	SetBinding("SHIFT-I") -- 开关宠物法术书
	SetBinding("SHIFT-Y") -- 开关统计数据面板
	SetBinding("SHIFT-M") -- 开关区域地图
	SetBinding("SHIFT-SPACE") -- 开关积分窗口
	SetBinding("SHIFT-R") -- 再次密语
	SetBinding("SHIFT-TAB") -- 选中前一个敌人
	SetBinding("SHIFT-F1") -- 选中队友宠物
	SetBinding("SHIFT-F2") -- 选中队友宠物
	SetBinding("SHIFT-F3") -- 选中队友宠物
	SetBinding("SHIFT-F4") -- 选中队友宠物
	SetBinding("SHIFT-F5") -- 选中队友宠物
	SetBinding("SHIFT-V") -- 有房姓名版
	SetBinding("SHIFT-T") -- 宠物攻击
	SetBinding("SHIFT-C") -- 物品比较循环
	SetCVar("SpellQueueWindow", 50)
end



function GetSpellNameForId(spID)
	-- local sn = C_Spell.GetSpellName(spID)
	-- return select(1, sn)
	local name = C_Spell.GetSpellName(spID)
	-- print(name)
	return name
end

-- 保存更改
-- SaveBindings(isAccountBindings and 1 or 2)

if (not pcshowkey) then
	pcshowkey = CreateFrame("StatusBar", nil, UIParent)
	pcshowkey:SetPoint("TOPLEFT")
	pcshowkey:SetSize(1, 1)
	pcshowkey:SetStatusBarTexture("Interface/Buttons/WHITE8X8")
	pcshowkey:SetStatusBarColor(1, 1, 1)
	pcshowkey:SetMinMaxValues(0, 1)
	pcshowkey:SetValue(1)
	pcshowkey:SetFrameStrata("TOOLTIP")
	pcshowkey:SetFrameLevel(104)
end

if (not bindKeyMap) then
	bindKeyMap = {
		["SHIFT-Y"] = {["r"] = 11, ["g"] = 107, ["b"] = 251},
		["SHIFT-U"] = {["r"] = 131, ["g"] = 109, ["b"] = 45},
		["SHIFT-I"] = {["r"] = 134, ["g"] = 175, ["b"] = 215},
		["SHIFT-O"] = {["r"] = 13, ["g"] = 185, ["b"] = 72},
		["SHIFT-P"] = {["r"] = 146, ["g"] = 216, ["b"] = 109},
		["SHIFT-H"] = {["r"] = 127, ["g"] = 191, ["b"] = 234},
		["SHIFT-J"] = {["r"] = 120, ["g"] = 150, ["b"] = 58},
		["SHIFT-K"] = {["r"] = 179, ["g"] = 50, ["b"] = 229},
		["SHIFT-L"] = {["r"] = 58, ["g"] = 40, ["b"] = 125},
		["SHIFT-B"] = {["r"] = 57, ["g"] = 138, ["b"] = 76},
		["SHIFT-N"] = {["r"] = 178, ["g"] = 180, ["b"] = 206},
		["SHIFT-M"] = {["r"] = 114, ["g"] = 206, ["b"] = 59},
		["SHIFT-F6"] = {["r"] = 75, ["g"] = 26, ["b"] = 211},
		["SHIFT-F7"] = {["r"] = 75, ["g"] = 29, ["b"] = 221},
		["SHIFT-F8"] = {["r"] = 71, ["g"] = 58, ["b"] = 215},
		["SHIFT-F9"] = {["r"] = 71, ["g"] = 78, ["b"] = 233},
		["SHIFT-F10"] = {["r"] = 42, ["g"] = 69, ["b"] = 214},
		["SHIFT-F11"] = {["r"] = 52, ["g"] = 63, ["b"] = 197},
		["Numpad0"] = {["r"] = 18, ["g"] = 55, ["b"] = 243},
		["Numpad1"] = {["r"] = 195, ["g"] = 231, ["b"] = 159},
		["Numpad2"] = {["r"] = 134, ["g"] = 85, ["b"] = 78},
		["Numpad3"] = {["r"] = 129, ["g"] = 98, ["b"] = 245},
		["Numpad4"] = {["r"] = 133, ["g"] = 114, ["b"] = 106},
		["Numpad5"] = {["r"] = 248, ["g"] = 60, ["b"] = 142},
		["Numpad6"] = {["r"] = 123, ["g"] = 152, ["b"] = 41},
		["Numpad7"] = {["r"] = 121, ["g"] = 81, ["b"] = 233},
		["Numpad8"] = {["r"] = 150, ["g"] = 135, ["b"] = 70},
		["Numpad9"] = {["r"] = 132, ["g"] = 129, ["b"] = 32},
		["SHIFT-F1"] = {["r"] = 110, ["g"] = 207, ["b"] = 151},
		["SHIFT-F2"] = {["r"] = 252, ["g"] = 123, ["b"] = 107},
		["SHIFT-F3"] = {["r"] = 132, ["g"] = 149, ["b"] = 212},
		["SHIFT-F4"] = {["r"] = 176, ["g"] = 129, ["b"] = 162},
		["SHIFT-F5"] = {["r"] = 78, ["g"] = 56, ["b"] = 231},
		["SHIFT-Z"] = {["r"] = 137, ["g"] = 41, ["b"] = 11},
		["SHIFT-X"] = {["r"] = 128, ["g"] = 131, ["b"] = 42},
		["SHIFT-C"] = {["r"] = 201, ["g"] = 187, ["b"] = 156},
		["SHIFT-7"] = {["r"] = 222, ["g"] = 33, ["b"] = 105},
		["SHIFT-8"] = {["r"] = 102, ["g"] = 223, ["b"] = 111},
		["SHIFT-9"] = {["r"] = 152, ["g"] = 73, ["b"] = 23},
		["SHIFT-0"] = {["r"] = 252, ["g"] = 173, ["b"] = 123}
	}
end

-- 根据当前职业绑定法术技能快捷键
-- true 打开按键日志
-- false 关闭按键日志

local pLog = true

if (not spellMapping) then
	spellMapping = {
		[262] = {        -- 萨满【元素】
			"天怒",
			"闪电之盾",
			"大地之盾",
			"风暴守护者",
			"自然迅捷",
			"风暴元素",
			"始源之潮",
			"升腾",
			"烈焰震击",
			"熔岩爆裂",
			"闪电箭",
			"闪电链",
			"岩浆图腾",
			"元素冲击",
			"地震术",
			"冰怒",
			"冰霜震击",
			"狂风怒号",
			"雷霆打击结界",
			"火元素",
			"先祖迅捷",
			"风剪",
			"大地震击",
			"收回图腾"
		},
		[263] = {        -- 萨满【增强】
			"风怒武器",
			"火舌武器",
			"闪电之盾",
			"始源之潮",
			"土元素",
			"风暴打击",
			"熔岩猛击",
			"毁灭闪电",
			"裂地术",
			"闪电箭",
			"火焰新星",
			"闪电链",
			"毁灭之风",
			"狂风怒号",
			"霜刃打击",
			"野性狼魂",
			"升腾",
			"冰霜震击",
			"风切",
			"涌动图腾",
			"元素冲击",
			"烈焰震击",
			"风剪",
			"始源风暴",
			"流电炽焰",
			"天怒",
			"收回图腾"
		},
		[70] = {         -- 圣骑士【惩戒】
			"处决宣判",
			"复仇之怒",
			"征伐",
			"最终清算",
			"圣光之锤",
			"神圣之锤",
			"审判官复仇",
			"圣殿骑士的裁决",
			"圣殿骑士斩击",
			"公正之剑",
			"灰炽觉醒",
			"圣洁鸣钟",
			"愤怒之锤",
			"圣殿骑士打击",
			"审判",
			"十字军打击",
			"神圣风暴",
			"灰烬觉醒",
			"最终审判",
			"复仇之盾",
			"责难",
			"圣殿骑士斩击"
		},
		[66] = {         -- 圣骑士【防骑】
			"荣耀圣令",
			"正义盾击",
			"圣盾术",
			"远古列王守卫",
			"复仇之怒",
			"炽热防御者",
			"圣疗术",
			"虔诚光环",
			"圣光裁决者",
			"奉献",
			"审判",
			"圣光之锤",
			"提尔之眼",
			"复仇者之盾",
			"十字军打击",
			"祝福之锤",
			"圣洁鸣钟",
			"正义之锤",
			"圣洁武器",
			"神圣壁垒",
			"愤怒之锤",
			"复仇之盾",
			"圣光壁垒",
			"光荣时刻",
			"责难",
			"戒卫"
		},
		[253] = {      -- 猎人【兽王】
			"召唤宠物 1",
			"猎人印记",
			"倒刺射击",
			"狂野怒火",
			"杀戮命令",
			"眼镜蛇射击",
			"多重射击",
			"爆炸射击",
			"凶暴野兽",
			"荒野的召唤",
			"黑蚀箭",
			"血溅十方",
			"弹幕射击",
			"夺命射击",
			"反制射击",
			"宁神射击",
			"治疗宠物"
		},
		[254] = { -- 射击？
			"召唤宠物 1",
			"猎人印记",
			"急速射击",
			"多重射击",
			"夺命射击",
			"爆炸射击",
			"乱射",
			"奥术射击",
			"齐射",
			"瞄准射击",
			"百发百中",
			"稳固射击",
			"哀恸箭",
			"弹幕射击",
			"黑蚀箭",
			"反制射击",
			"宁神射击"
		},
		[255] = {  --生存
			"召唤宠物 1",
			"猎人印记",
			"野火炸弹",
			"雄鹰之怒",
			"爆炸射击",
			"屠戮",
			"鱼叉猛刺",
			"猛禽一击",
			"锐矛之锋",
			"协同进攻",
			"杀戮命令",
			"夺命射击",
			"猫鼬撕咬",
			"侧翼打击",
			"压制",
			"宁神射击",
			"雄鹰守护",
			"治疗宠物"
		},
		[269] = { -- 踏风
			"猛虎掌",
			"白虎下凡",
			"风火雷电",
			"业报之触",
			"轮回之触",
			"神鹤引项踢",
			"天神御身",
			"旭日东升踢",
			"升龙霸",
			"幻灭踢",
			"风领主之击",
			"碎玉闪电",
			"怒雷破",
			"碧火踏",
			"妖魂踏",
			"真气爆裂",
			"切喉手",
			"切削之风"
		},
		[64] = {  --冰法
			"奥术智慧",
			"镜像",
			"寒冰箭",
			"冰冷血脉",
			"冰风暴",
			"彗星风暴",
			"冰川尖刺",
			"寒冰宝珠",
			"镜像",
			"冰枪术",
			"暴风雪",
			"冰锥术",
			"冰冻术",
			"寒冰新星",
			"变易幻能",
			"冰霜射线",
			"霜火之箭",
			"法术反制"
		},
		[63] = {  --火法
			"奥术智慧",
			"镜像",
			"不死鸟之焰",
			"流星",
			"燃烧",
			"烈焰风暴",
			"火焰冲击",
			"灼烧",
			"霜火之箭",
			"变易幻能",
			"火球术",
			"炎爆术",
			"寒冰新星",
			"法术反制"
		},
		[62] = { --奥法
			"奥术智慧",
			"镜像",
			"唤醒",
			"奥术飞弹",
			"奥术涌动",
			"大法师之触",
			"奥术冲击",
			"气定神闲",
			"奥术弹幕",
			"奥术宝珠",
			"变易幻能",
			"魔爆术",
			"法术反制"
		},
		[268] = { -- 武僧 酒仙
			"散魔功",
			"活血术",
			"活血酒",
			"天神酒",
			"躯不坏",
			"壮胆酒",
			"轮回之触",
			"移花接木",
			"玄牛酒",
			"幻灭踢",
			"真气爆裂",
			"精序兵戈",
			"旭日东升踢",
			"猛虎掌",
			"醉酿投",
			"神鹤引项踢",
			"火焰之息",
			"爆炸酒桶",
			"碧玉疾风",
			"玄牛下凡",
			"切喉手",
			"天神灌注"
		},
		[258] = { -- 牧师 暗牧
			"黑暗升华",
			"虚空冲击",
			"真言术：韧",
			"暗影形态",
			"暗影魔",
			"摧心魔",
			"吸血鬼之触",
			"心灵震爆",
			"能量灌注",
			"噬灵疫病",
			"虚空洪流",
			"精神鞭笞",
			"精神鞭笞：狂",
			"光晕",
			"暗影冲撞",
			"虚空爆发",
			"虚空箭",
			"暗言术：痛",
			"暗言术：灭",
			"渐隐术",
			"神圣新星",
			"消散",
			"奥术脉冲",
			"绝望祷言",
			"沉默",
			"心灵尖刺",
			"心灵尖刺：狂",
			"虚空幽灵",
			"虚空齐射"
		},
		[71] = { -- 战士 武器
			"普生堡垒之矛",
			"顺劈斩",
			"雷霆一击",
			"雷鸣之吼",
			"天神下凡",
			"横扫攻击",
			"破坏者",
			"灭战者",
			"勇士之矛",
			"巨人打击",
			"剑刃风暴",
			"崩摧",
			"压制",
			"致死打击",
			"碎颅打击",
			"斩杀",
			"旋风斩",
			"冲锋",
			"撕裂",
			"猛击",
			"战斗怒吼",
			"战斗姿态",
			"风暴之锤",
			"拳击"
		},
		[72] = { -- 战士 狂暴
			"冲锋",
			"应用飞跃",
			"战斗怒吼",
			"狂暴姿态",
			"鲁莽",
			"天神下凡",
			"雷鸣之吼",
			"普生堡垒之矛",
			"奥丁之怒",
			"旋风斩",
			"斩杀",
			"暴怒",
			"剑刃风暴",
			"强攻",
			"嗜血",
			"怒击",
			"风暴之锤",
			"猛击",
			"浴血奋战",
			"碎甲猛击",
			"雷霆轰击",
			"破坏者",
			"雷霆一击",
			"勇士之矛",
			"拳击"
		},
		[73] = { -- 战士 防御
			"雷霆轰击",
			"雷霆一击",
			"复仇",
			"盾牌猛击",
			"冲锋",
			"天神下凡",
			"法术格挡",
			"盾墙",
			"无视苦痛",
			"破釜沉舟",
			"集结呐喊",
			"乘胜追击",
			"胜利在望",
			"破坏者",
			"挫志怒吼",
			"崩摧",
			"雷鸣之吼",
			"盾牌冲锋",
			"盾牌格挡",
			"斩杀",
			"毁灭打击",
			"战斗姿态",
			"勇士之矛",
			"勇士之矛",
			"拳击",
			"战斗怒吼"
		},
		[265] = { -- 术士 痛苦		
			"召唤萨亚德",
			"牺牲魔典",
			"诡异魅影",
			"鬼影缠身",
			"痛楚",
			"召唤黑眼",
			"邪恶污染",
			"痛苦无常",
			"灵魂腐化",
			"灾难狂欢",
			"腐蚀之种",
			"腐蚀术",
			"吸取灵魂",
			"枯萎",
			"怨毒",
			"湮灭",
			"法术封锁",
			"邪能统御",
			"暗影箭",
			"召唤地狱猎犬"
		},
		[266] = { --术士 恶魔学士
			"能量虹吸",
			"内爆",
			"召唤恶魔暴君",
			"恶魔力量",
			"古尔丹之手",
			"召唤灼焦恶犬",
			"召唤恐惧猎犬",
			"恶魔之箭",
			"魔典：恶魔卫士",
			"暗影箭",
			"狱火箭",
			"陨灭",
			"召唤恶魔卫士",
			"灾怨轰炸",
			"断魂斧",
			"法术封锁",
			"邪能统御",
			"召唤阴暗恶犬",
			"召唤地狱猎犬"
		},
		[267] = { --术士 毁灭!！
			"召唤萨亚德",
			"烧尽",
			"燃烧",
			"混乱之箭",
			"暗影灼烧",
			"火焰之雨",
			"引导恶魔之火",
			"怨毒",
			"召唤地狱火",
			"邪能统御",
			"枯萎",
			"灵魂之火",
			"次元裂隙",
			"献祭",
			"陨灭",
			"狱火箭",
			"浩劫",
			"大灾变",
			"法术封锁",
			"召唤地狱猎犬"
		},
		[1467] = { -- 湮灭
			"裂解",
			"狂龙之怒",
			"永恒之涌",
			"碎裂星辰",
			"葬火",
			"活化烈焰",
			"回归",
			"深呼吸",
			"扭转天平",
			"火焰吐息",
			"碧蓝打击",
			"悬空",
			"焚身",
			"火焰风暴",
			"镇压",
			"Azure Sweep"
		},
		[1473] = { -- 增辉
			"活化烈焰",
			"炽火龙鳞",
			"先知先觉",
			"黑檀之力",
			"扭转天平",
			"喷发",
			"火焰吐息",
			"地壳激变",
			"亘古吐息",
			"镇压"
		},
		[250] = { --血DK
			"亡者复生",
			"死神的抚摩",
			"死神印记",
			"灵界打击",
			"血液沸腾",
			"吞噬",
			"憎恶附肢",
			"精髓分裂",
			"符文刃舞",
			"白骨风暴",
			"墓石",
			"心脏打击",
			"吸血鬼打击",
			"灵魂收割",
			"枯萎凋零",
			"冰封之韧",
			"符文分流",
			"吸血鬼之血",
			"反魔法护罩",
			"心灵冰冻",
			"牺牲契约",
			"饮血者"
		},
		[251] = { --冰DK
			"憎恶附肢",
			"冷酷严冬",
			"枯萎凋零",
			"凛风冲击",
			"冰龙吐息",
			"冰霜之柱",
			"死神印记",
			"亡者复生",
			"湮灭",
			"冰霜打击",
			"符文武器增效",
			"冰霜巨龙之怒",
			"冰霜之镰",
			"寒冬号角",
			"冰川突进",
			"灵魂收割",
			"寒冰联结",
			"反魔法护罩",
			"心灵冰冻"
		},
		[252] = {  --邪DK
			"亡者复生",
			"培育憎恶",
			"黑暗突变",
			"邪恶突袭",
			"憎恶附肢",
			"扩散",
			"爆发",
			"天灾打击",
			"亵渎",
			"脓疮打击",
			"脓疮毒镰",
			"凋零缠绕",
			"召唤石像鬼",
			"吸血鬼打击",
			"天启",	
			"邪恶蔓延",
			"反魔法护罩",
			"心灵冰冻",
			"灵魂收割",
			"亡者大军",
			"枯萎凋零",
			"暗影之爪",
			"灵魂军团"
		},
		[577] = {  --浩劫
			"烈焰咒符",
			"献祭光环",
			"邪能冲撞",
			"恶魔追击",
			"眼棱",
			"死亡横扫",
			"恶魔变形",
			"复仇回避",
			"刃舞",
			"混乱打击",
			"吞噬之焰",
			"毁灭",
			"战刃风暴",
			"邪能之刃",
			"投掷利刃",
			"精华破碎",
			"末日咒符",
			"深渊凝视",
			"收割者战刃",
			"怨念咒符",
			"邪能弹幕",
			"瓦解"
		},
		[581] = {  --复仇
			"烈焰咒符",
			"恶魔尖刺",
			"地狱火撞击",
			"献祭光环",
			"破裂",
			"烈火烙印",
			"邪能毁灭",
			"灵魂爆裂",
			"灵魂割裂",
			"灵魂裂劈",
			"恶魔变形",
			"怨念咒符",
			"恶魔追击",
			"邪能之刃",
			"邪能荒芜",
			"收割者战刃",
			"幽魂炸弹",
			"灵魂切削",
			"噬众",
			"瓦解"
		},
		[259] = { --奇袭
			"夺命药膏",
			"增效药膏",
			"萎缩药膏",
			"减速药膏",
			"潜行",
			"锁喉",
			"刀扇",
			"毁伤",
			"猩红风暴",
			"割裂",
			"毒伤",
			"毒刃",
			"切割",
			"君王之灾",
			"死亡印记",
			"消失",
			"伏击",
			"菊花茶",
			"脚踢",
			"迟钝药膏",
			"冷血"
		},
		[260] = {-- 盗贼 狂徒
			"萎缩药膏",
			"速效药膏",
			"潜行",
			"冲动",
			"剑刃乱舞",
			"命运骨骰",
			"正中眉心",
			"鬼魅攻击",
			"消失",
			"影袭",
			"斩击",
			"手枪射击",
			"时运继延",
			"冷血",
			"菊花茶",
			"影舞步",
			"刀锋冲刺",
			"致命一击",
			"脚踢",
			"伏击",
			"迟钝药膏",
			"Roll the Bones"
		},
		[261] = {-- 盗贼 敏锐
			"速效药膏",
			"迟钝药膏",
			"萎缩药膏",
			"潜行",
			"暗影打击",
			"狂热鞭笞",
			"消失",
			"刺骨",
			"影分身",
			"袖剑风暴",
			"袖剑旋风",
			"背刺",
			"致命一击",
			"割裂",
			"死亡符记",
			"暗影之舞",
			"暗影之刃",
			"幽暗之刃",
			"黑火药",
			"菊花茶",
			"冷血",
			"赤喉之咬",
			"脚踢"
		},
		[102] = { --德鲁伊 平衡德
			"枭兽形态",
			"愤怒",
			"艾露恩的战士",
			"阳炎术",
			"月火术",
			"化身：艾露恩之眷",
			"星涌术",
			"星火术",
			"自然的守护",
			"野性印记",
			"半月",
			"自然之力",
			"星辰坠落",
			"新月",
			"满月",
			"星辰耀斑",
			"艾露恩之怒",
			"万灵之召",
			"超凡之盟",
			"野性蘑菇",
			"日光术",
			"甘霖",
			"安抚"
		},
		[103] = { --德鲁伊 野性
			"斜掠",
			"狂暴回复",
			"痛击",
			"割裂",
			"割碎",
			"迎头痛击",
			"野性冲锋",
			"猛虎冲刺",
			"安抚",
			"甘霖",
			"蛮力猛击",
			"自然的守护",
			"野性之心",
			"猛虎之怒",
			"原始之怒",
			"生存本能",
			"狂暴",
			"野蛮挥砍",
			"激变蜂群",
			"化身：阿莎曼之灵",
			"万灵之召",
			"野性狂乱",
			"树皮术",
			"愈合",
			"凶猛撕咬",
			"愤怒",
			"潜行",
			"撕碎",
			"猎豹形态",
			"野性印记",
			"月火术"
		},
		[104] = { --德鲁伊 守护
			"熊形态",
			"野性印记",
			"野性之心",
			"月火术",
			"痛击",
			"明月普照",
			"化身：乌索克的守护者",
			"重殴",
			"沉睡者之怒",
			"铁鬃",
			"裂伤",
			"横扫",
			"树皮术",
			"甘霖",
			"狂暴回复",
			"生存本能",
			"摧折",
			"粉碎",
			"迎头痛击",
			"甘霖",
			"安抚",
			"狂暴"
		}
	}
end

-- 种族技能
if (not raceMapping) then
	raceMapping = {
		["BloodElf"] = "奥术洪流(种族特长)", --"血精灵",
		["Vulpera"] = "袋里乾坤(种族特长)", --"狐人"
		["Nightborne"] = "奥术脉冲(种族特长)", -- "夜之子"
		["MagharOrc"] = "先祖召唤(种族特长)", -- "玛格汉兽人"
		["Troll"] = "狂暴(种族特长)", -- 巨魔
		["LightforgedDraenei"] = "圣光裁决者(种族特长)", -- 光柱德莱尼
		["Orc"] = "血性狂怒(种族特长)", -- 兽人
		["Goblin"] = "火箭弹幕(种族特长)", -- 地精
		["Dwarf"] = "石像形态(种族特长)", -- 矮人
		["Gnome"] = "逃命专家(种族特长)", -- 侏儒
		["Draenei"] = "纳鲁的赐福(种族特长)", -- 德莱尼
		["Worgen"] = "疾步夜行(种族特长)", -- 狼人
		["Pandaren"] = "震山掌(种族特长)", -- 熊猫人
		["DarkIronDwarf"] = "烈焰之血(种族特长)" -- 黑铁矮人
	}
end

-- 鼠标指向型的饰品
if (not useTrinketMap) then
	useTrinketMap = {
		["爆裂圣光碎片"] = true,
		["诺格弗格至尊豪华版"] = true
	}
end

if (not bkeyMapping) then
	bkeyMapping = {
		[1] = "SHIFT-Y",
		[2] = "SHIFT-U",
		[3] = "SHIFT-I",
		[4] = "SHIFT-O",
		[5] = "SHIFT-P",
		[6] = "SHIFT-H",
		[7] = "SHIFT-J",
		[8] = "SHIFT-K",
		[9] = "SHIFT-L",
		[10] = "SHIFT-B",
		[11] = "SHIFT-N",
		[12] = "SHIFT-M",
		[13] = "SHIFT-F6",
		[14] = "SHIFT-F7",
		[15] = "SHIFT-F8",
		[16] = "SHIFT-F9",
		[17] = "SHIFT-F10",
		[18] = "SHIFT-F11",
		[19] = "Numpad0",
		[20] = "Numpad1",
		[21] = "Numpad2",
		[22] = "Numpad3",
		[23] = "Numpad4",
		[24] = "Numpad5",
		[25] = "Numpad6",
		[26] = "SHIFT-F1",
		[27] = "SHIFT-F2",
		[28] = "SHIFT-F3",
		[29] = "SHIFT-F4",
		[30] = "SHIFT-F5",
		[31] = "SHIFT-Z",
		[32] = "SHIFT-X",
		[33] = "SHIFT-C",
		[34] = "SHIFT-7",
		[35] = "SHIFT-8",
		[36] = "SHIFT-9",
		[37] = "SHIFT-0",
		[38] = "Numpad7", -- 种族技能
		[39] = "Numpad8", -- 饰品位置
		[40] = "Numpad9" -- 饰品位置
	}
end

if (not tempKey) then
	tempKey = {}
end

function table.contains(table, value)
    for _, v in ipairs(table) do
        if v == value then
            return true
        end
    end
    return false
end

local addKey = "SHIFT-"

local function autoKeybind()

	local specIndex = GetSpecialization()  -- 获取玩家当前专精的索引（从1开始）

	if specIndex then
	    local specID, specName, _, specIcon = GetSpecializationInfo(specIndex)
	    -- print("当前专精：" .. specID)  -- 打印专精名称
		-- 打印专精 ID
		if (specID) then
		
			local splms = spellMapping[specID]
		
			if (splms) then

				local focusToFeedSpells = {
					["最终清算"] = true, -- 惩戒 最终清算
					["涌动图腾"] = true,  -- 萨满 涌动图腾
					["爆炸酒桶"] = true, -- 酒仙 爆炸酒桶
					["破坏者"] = true, -- 战士 破坏者
					["勇士之矛"] = true, -- 战士 勇士之矛
					["枯萎凋零"] = true, --冰DK 枯萎凋零
					["亵渎"] = true, --邪DK 亵渎
					["烈焰咒符"] = true, --浩劫 烈焰咒符
					["恶魔变形"] = true, --浩劫 恶魔变形
					["末日咒符"] = true,  --浩劫 末日咒符
					["怨念咒符"] = true, --浩劫 怨念咒符
					["地狱火撞击"] = true -- 复仇 地狱火撞击
				}
				
				-- 指向性法术鼠标位置施放
				local focusToMouse = {}
				-- 勾选自动释放在鼠标位置才生效
				-- if (Hekili.DB.profile.toggles.auto_spell_to_mouse_here.value) then
					focusToMouse = {
						["岩浆图腾"] = true, -- 元素萨满 岩浆图腾
						["地震术"] = true, -- 元素萨满 地震术
						["乱射"] = true, -- 射击猎人 乱射
						["烈焰风暴"] = true, --火法 烈焰风暴
						["暴风雪"] = true, -- 冰法 暴风雪
						["冰冻术"] = true, -- 冰法 冰冻术（宠物技能）
						["流星"] = true, -- 火法 流星
						["邪恶污染"] = true, -- 痛苦 邪恶污染
						["断魂斧"] = true, -- 恶魔学识 断魂斧
						["火焰之雨"] = true, --毁灭 火焰之雨
						["召唤地狱火"] = true, --毁灭 召唤地狱火(守卫)
						["大灾变"] = true, --毁灭 大灾变
						["自然之力"] = true, --平衡德 自然之力
						["暗影冲撞"] = true, -- 暗牧 暗影冲
						["火焰风暴"] = true -- 湮灭 火焰风暴
					}
				-- end
			
				for index, spellName in ipairs(spellMapping[specID]) do
			
					-- maxIndex = index
					local bkey = bkeyMapping[index]
					local auto_key = _G[addKey..bkey]
					if (not auto_key) then
						auto_key = CreateFrame("Button", addKey..bkey, UIParent, "SecureActionButtonTemplate")
						auto_key:RegisterForClicks("AnyUp", "AnyDown")
						auto_key:SetAttribute("type", "macro")
					end
			
					if ("圣光之锤" == spellName) then
						-- 惩戒大锤特殊判定
						if (specID == 66) then
							-- 防骑
							auto_key:SetAttribute("macrotext", "/cast [nodead] 提尔之眼")
						else
							-- 惩戒
							auto_key:SetAttribute("macrotext", "/cast [nodead] 灰烬觉醒")
						end
					elseif ("倒刺射击" == spellName) then
						-- 兽王
						if (specID == 253) then
							auto_key:SetAttribute("macrotext", "/cast [@mouseover,exists,nodead] 倒刺射击; [@target,nodead] 倒刺射击")
						end
					elseif ("灵魂割裂" == spellName) then
						-- 复仇
						if (specID == 581) then
							auto_key:SetAttribute("macrotext", "/cast [nodead] 灵魂裂劈")
						end
					elseif ("虚空齐射" == spellName) then
						-- 暗牧
						if (specID == 258) then
							-- 增强闪电箭特效处理
							auto_key:SetAttribute("macrotext", "/cast [nodead] 虚空洪流")
						end
					elseif ("圣洁武器" == spellName) then
						-- 防骑
						if (specID == 66) then
							-- 增强闪电箭特效处理
							auto_key:SetAttribute("macrotext", "/cast [nodead] 圣洁武器 /cast [nodead] 神圣壁垒")
						end
					elseif ("神圣壁垒" == spellName) then
						-- 防骑
						if (specID == 66) then
							-- 增强闪电箭特效处理
							auto_key:SetAttribute("macrotext", "/cast [nodead] 圣洁武器 /cast [nodead] 神圣壁垒")
						end
					elseif ("回归" == spellName) then
						if (specID == 1467) then
							-- 增强闪电箭特效处理
							auto_key:SetAttribute("macrotext", "/cast [nodead] 深呼吸")
						end
					elseif ("狂风怒号" == spellName) then
						-- 增强闪电箭特效处理
						auto_key:SetAttribute("macrotext", "/cast [nodead] 闪电箭")
					elseif ("风火雷电：锁定" == spellName) then
						-- 踏风 烽火雷电
						auto_key:SetAttribute("macrotext", "/cast [nodead] 风火雷电")
					elseif ("雷霆轰击" == spellName) then
						-- 战士 雷霆轰击
						auto_key:SetAttribute("macrotext", "/cast [nodead] 雷霆一击")
					elseif ("脓疮毒镰" == spellName) then
						-- 邪DK心脏打击特效处理
						auto_key:SetAttribute("macrotext", "/cast [nodead] 脓疮打击")
					elseif ("吸血鬼打击" == spellName) then
						-- 邪DK天灾打击特效处理
						if (specID == 252) then
							-- 邪DK
							auto_key:SetAttribute("macrotext", "/cast [nodead] 天灾打击")
						else
							-- 血DK
							auto_key:SetAttribute("macrotext", "/cast [nodead] 心脏打击")
						end
					elseif ("致命一击" == spellName) then
						-- 盗贼狂徒伏击特效处理
						if (specID == 260) then
							-- 盗贼 狂徒
							-- auto_key:SetAttribute("macrotext", "/cast [nodead] 伏击")
							auto_key:SetAttribute("macrotext", "/cast [nodead] 斩击")
						else
							--  盗贼 敏锐
							auto_key:SetAttribute("macrotext", "/cast [nodead] 刺骨")
						end
						
					elseif (focusToFeedSpells[spellName]) then
						auto_key:SetAttribute("macrotext", "/cast [@player] "..spellName)
					elseif (focusToMouse[spellName]) then
						auto_key:SetAttribute("macrotext", "/cast [@cursor] "..spellName)
					else
						auto_key:SetAttribute("macrotext", "/cast [nodead] "..spellName)
						print(bkey.."创建按键绑定成功"..spellName)
					end
					if InCombatLockdown() ~= true then
						SetBinding(bkey, nil)
						SetOverrideBindingClick(auto_key, true, bkey, auto_key:GetName())
						tempKey[spellName] = bkey
						
					else
						print("生成一键宏失败, 请脱战之后 /RL  一下")
					end
				end
			else
				if (specName) then
					print("|c21C80000抱歉|r|cFF37EB00"..specName.."|r|c21C80000暂不支持，详细咨询请联系客服\r\n")
				end
				print("专精 ID：" .. specID)
			end
		end
	else
	    print("玩家没有选择专精或尚未登录")
	end
end

local function raceBind(bkey)
	local _, raceID = UnitRace("player")
	if (pLog) then
		print(raceID)
	end
	local spellName = raceMapping[raceID]
	if (spellName) then
		local auto_key = _G[bkey]
		if (not auto_key) then
			auto_key = CreateFrame("Button", bkey, UIParent, "SecureActionButtonTemplate")
			auto_key:RegisterForClicks("AnyUp", "AnyDown")
			auto_key:SetAttribute("type", "macro")
		end
		auto_key:SetAttribute("macrotext", "/cast [nodead] "..spellName)
		if InCombatLockdown() ~= true then
			SetBinding(bkey, nil)
			SetOverrideBindingClick(auto_key, true, bkey, auto_key:GetName())
			tempKey[spellName] = bkey
		else
			print("生成一键宏失败, 请脱战之后 /RL  一下")
		end
	end
end

local function trinketBind(index, bkey)

	local trinket = GetInventoryItemID("player", index)

	if trinket then
		local trinketName = GetItemInfo(trinket)
		local auto_key = _G[bkey]
		if (not auto_key) then
			auto_key = CreateFrame("Button", bkey, UIParent, "SecureActionButtonTemplate")
			auto_key:RegisterForClicks("AnyUp", "AnyDown")
			auto_key:SetAttribute("type", "macro")
		end
		if (useTrinketMap[trinketName]) then
			auto_key:SetAttribute("macrotext", "/cast [@cursor] "..trinketName)
		else
			auto_key:SetAttribute("macrotext", "/cast [nodead] "..trinketName)
		end
		
		if InCombatLockdown() ~= true then
			SetBinding(bkey, nil)
			SetOverrideBindingClick(auto_key, true, bkey, auto_key:GetName())
			tempKey[trinket] = bkey
			-- print("创建按键绑定成功")
			-- print("/cast "..trinketName.." -- ALT-"..bkey)
		else
			print("生成一键宏失败, 请脱战之后 /RL  一下")
		end
	end
end

autoKeybind()
trinketBind(16, "0")
trinketBind(13, "Numpad8")
trinketBind(14, "Numpad9")
raceBind("Numpad7")

local ftrinket = CreateFrame("Frame")
-- 饰品更换
local function ftrinketOnEvent(self, event, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
    if event == "PLAYER_EQUIPMENT_CHANGED" then
        local slotId = arg1
        -- local itemId = arg2
        if slotId == 16 or slotId == 13 or slotId == 14 then
			trinketBind(16, "0")
            trinketBind(13, "Numpad8")
            trinketBind(14, "Numpad9")
			if (pLog) then
				print('重新绑定了饰品')
			end
        end
    end
end
ftrinket:RegisterEvent("PLAYER_EQUIPMENT_CHANGED")
ftrinket:SetScript("OnEvent", ftrinketOnEvent)
-- 专精切换
local function onSpecializationChange(self, event, ...)
	if (pLog) then
		print('重新绑定所有按键')
	end
	autoKeybind()
end
local zhuanjing = CreateFrame("Frame")
zhuanjing:RegisterEvent("PLAYER_TALENT_UPDATE")
zhuanjing:SetScript("OnEvent", onSpecializationChange)

local function changeToColor(nr, ng, nb)
	if (pcshowkey) then
		pcshowkey:SetStatusBarColor(nr, ng, nb)
	end
end

-- add for pengchao end --
local GetSpellCooldown = function(spellID)
    local spellCooldownInfo = C_Spell.GetSpellCooldown(spellID)
    if spellCooldownInfo then
        return spellCooldownInfo.startTime, spellCooldownInfo.duration, spellCooldownInfo.isEnabled, spellCooldownInfo.modRate
    end
    return 0, 0, false, 0
end

local timeOffset = 0
local initialized = false

local function GetGameTime()
    local t = GetTime()
    if not initialized then
        timeOffset = -t
        initialized = true
    end
    return t + timeOffset
end

local CenterIconFrame = CreateFrame("Frame", "CenterIconFrame", UIParent)
CenterIconFrame:SetSize(50, 50) -- 图标大小
CenterIconFrame:SetPoint("CENTER", UIParent, "CENTER", 0, -200) -- 屏幕中央
CenterIconFrame:Show()
CenterIconFrame:SetFrameLevel(9998)
CenterIconFrame:SetMovable(true)
CenterIconFrame:EnableMouse(true)
CenterIconFrame:RegisterForDrag("LeftButton")

-- 拖动事件
CenterIconFrame:SetScript("OnDragStart", function(self)
    self:StartMoving()
end)

CenterIconFrame:SetScript("OnDragStop", function(self)
    self:StopMovingOrSizing()
end)
local iconTexture = CenterIconFrame:CreateTexture(nil, "ARTWORK")
iconTexture:SetAllPoints(CenterIconFrame)

-- 创建一个新的Frame，用于承载图片
local pauseFrame = CreateFrame("Frame", "StonePauseFrame", CenterIconFrame)
pauseFrame:SetSize(50, 50)  -- 图片大小（可调）
pauseFrame:SetPoint("CENTER", CenterIconFrame, "CENTER", 0, 0) -- 屏幕中央
-- 添加背景纹理
local tex = pauseFrame:CreateTexture(nil, "ARTWORK")
tex:SetAllPoints()
tex:SetTexture("Interface\\AddOns\\Stone\\Textures\\Pause.blp")
-- 可选：让它更显眼，比如加个淡入淡出动画
pauseFrame:SetAlpha(0.9)
pauseFrame:Hide()
pauseFrame:SetFrameLevel(9999)

-- 更新函数w
local function UpdateStone()

	-- 更新函数w
    local actionType, id, subType = GetActionInfo(actionSlot)
    if actionType == "spell" or actionType == "macro" then
	
local spellTexture = C_Spell.GetSpellTexture(id)
        iconTexture:SetTexture(spellTexture) -- 设置图标
		-- pauseTexture:SetTexture("Interface\\Addons\\Hekili\\Textures\\Pause")
		
		-- add for pengchao start --

		local spID = id
		-- print(id)
		local bindKeyN = tempKey[GetSpellNameForId(spID)]
		
		if doit and UnitCanAttack( "player", "target" ) then
			local lname, _, _, _, _, _, lspellID = UnitChannelInfo("player")
			if lname then
				-- 玩家正在施放引导技能
				-- print("正在引导技能: " .. lname)
				-- print("法术 ID: " .. lspellID)
				changeToColor(1, 1, 1)
			else
				-- 玩家没有施放引导技能
				-- print("没有施放引导技能")
				if (bindKeyN) then
					local colorMap = bindKeyMap[bindKeyN]
					local nr = colorMap["r"] / 255.0
					local ng = colorMap["g"] / 255.0
					local nb = colorMap["b"] / 255.0

					if UnitCanAttack("player", "target") and not UnitIsDead("target") then

						if (not ChatFrame1EditBox:IsShown()) then

							if (not SpellIsTargeting()) then
					
								if (pLog) then
									print("目标可攻击")
									print("绑定按键"..bindKeyN.."技能名字"..GetSpellNameForId(spID))
								end
								changeToColor(nr, ng, nb)
							else
								if (pLog) then
									print("选取技能状态，暂不攻击")
									changeToColor(1, 1, 1)
								end
							end
							
						else
							if (pLog) then
								print("弹出了输入框，不攻击")
							end
							changeToColor(1, 1, 1)
						end
						
					else
						if (pLog) then
							print("目标不可攻击")
						end
						changeToColor(1, 1, 1)
					end
					-- changeToColor(nr, ng, nb)
					-- if (pLog) then
					-- 	print("绑定按键"..bindKeyN)
					-- end
				else
					if (pLog) then
						print("法术ID:"..spID.." 法术名:"..string.gsub(GetSpellNameForId(spID), "%b()", ""))
					end
				end
				
			end
		else
			changeToColor(1, 1, 1)
		end

		
		-- add for pengchao end --
		
    end
end



-- 注册事件监听
local stone = CreateFrame("Frame", "MirrorSkillFrame", UIParent)
stone:RegisterEvent("ACTIONBAR_SLOT_CHANGED")
stone:RegisterEvent("ACTIONBAR_UPDATE_STATE")
stone:RegisterEvent("PLAYER_ENTERING_WORLD")
stone:RegisterEvent("SPELLS_CHANGED")

stone:SetScript("OnEvent", function(_, event, arg1)
    if event == "ACTIONBAR_SLOT_CHANGED" and arg1 ~= actionSlot then
        return
    end
	-- if doit then
		UpdateStone()
	-- end
    
end)

-- 核心切换函数
local function ToggleDoit()
    print("触发切换")
    doit = not doit
	
	if doit then
		pauseFrame:Hide()
	else
		pauseFrame:Show()
	end
	
    print("doit: " .. tostring(doit))
	
end

-- 创建一个隐藏的动作按钮（用于绑定快捷键）
local btn = CreateFrame("Button", "MyToggleButton", UIParent, "ActionButtonTemplate")
btn:Hide() -- 隐藏按钮，仅用于绑定功能

-- 设置按钮点击事件为切换函数
btn:SetScript("OnClick", ToggleDoit)

-- 绑定R键到该按钮
local function SetupBinding()
    -- 将R键绑定到这个隐藏按钮（系统原生支持的动作按钮绑定）
    SetBindingClick("R", btn:GetName())
    SaveBindings(1) -- 保存到角色绑定
    print("R键绑定完成，按R测试")
	-- -- 初次加载
	UpdateStone()
	configs()
end

-- 插件加载时执行
local tttframe = CreateFrame("Frame")
tttframe:RegisterEvent("PLAYER_LOGIN")
tttframe:SetScript("OnEvent", SetupBinding)

-- C_Spell.PickupSpell(20271)
-- PlaceAction(25)
-- ClearCursor()

